package com.tulingxueyuan.mall.modules.pms.controller;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tulingxueyuan.mall.common.api.CommonPage;
import com.tulingxueyuan.mall.common.api.CommonResult;
import com.tulingxueyuan.mall.modules.pms.model.PmsProductAttribute;
import com.tulingxueyuan.mall.dto.RelationAttrInfoDto;
import com.tulingxueyuan.mall.modules.pms.service.PmsProductAttributeCategoryService;
import com.tulingxueyuan.mall.modules.pms.service.PmsProductAttributeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 商品属性参数表 前端控制器
 * </p>
 *
 * @author SiXiaoLong
 * @since 2022-10-13
 */
@RestController
@RequestMapping("/productAttribute")
public class PmsProductAttributeController {
    @Autowired
    PmsProductAttributeService pmsProductAttributeService;
    @Autowired
    PmsProductAttributeCategoryService pmsProductAttributeCategoryService;

        /**
         * 根据id查询商品详情  获取关联的筛选属性
         */
    @GetMapping("/attrInfo/{id}")
    public CommonResult getRelationAttrInfoById(@PathVariable Long id){
        List<RelationAttrInfoDto> list = pmsProductAttributeService.getRelationAttrInfoById(id);
        return CommonResult.success(list);
    }

    /**
     * 查询筛选属性
     */
//    @GetMapping("/category/list/withAttr")
//    public CommonResult getAttr(){
//        List<PmsProductAttribute> list = pmsProductAttributeService.list();
//        return CommonResult.success(list);
//    }
        /**
         * 分页
         */
        @GetMapping("/list/{productAttributeCategoryId}")
        public CommonResult list(@PathVariable Long productAttributeCategoryId,Integer pageNum, Integer pageSize, Integer type){
            Page page = pmsProductAttributeService.getList(productAttributeCategoryId, pageNum, pageSize, type);
            if (pageNum > page.getPages()){
                page = pmsProductAttributeService.getList(productAttributeCategoryId, (int)page.getPages(), pageSize, type);
            }
            return CommonResult.success(CommonPage.restPage(page));
        }

    /**
     * 添加属性
     */
        @PostMapping("/create")
    public CommonResult create(@RequestBody PmsProductAttribute pmsProductAttribute){
            boolean save = pmsProductAttributeService.create(pmsProductAttribute);
            return CommonResult.success(save);
        }

    /**
     * 根据id获取属性
     */
    @GetMapping("/{id}")
    public CommonResult getByIdAttr(@PathVariable Long id){
        PmsProductAttribute productAttribute = pmsProductAttributeService.getById(id);
        return CommonResult.success(productAttribute);
    }
    /**
     * 编辑属性
     */
    @PostMapping("/update/{id}")
    public CommonResult updateAttr(@PathVariable Long id,@RequestBody PmsProductAttribute pmsProductAttribute){
        pmsProductAttribute.setId(id);
        boolean update = pmsProductAttributeService.updateById(pmsProductAttribute);
        return CommonResult.success(update);
    }

    /**
     * 删除属性
     */
    @PostMapping("/delete")
    public CommonResult updateAttr(@RequestBody Map map){
//        pmsProductAttribute.setId(id);
        List<String> ids = (List<String>) map.get("ids");
        boolean save = pmsProductAttributeService.delete(ids);
//        if (save){
////            :更新对应属性、参数的数量
//            LambdaUpdateWrapper<PmsProductAttributeCategory> uw = new LambdaUpdateWrapper<>();
////            属性
//            if (pmsProductAttribute.getType() == 0){
//                uw.setSql("attribute_count=attribute_count+1");
////            参数
//            }else if (pmsProductAttribute.getType() == 1){
//                uw.setSql("param_count=param_count+1");
//            }
//            pmsProductAttributeCategoryService.update(uw);
//        }
//        if (save){
////            获取列表中的第一个id  判断是属性还是参数
//            Long id = ids.get(0);
//            LambdaQueryWrapper<PmsProductAttribute> lqw = new LambdaQueryWrapper<>();
//            lqw.eq(PmsProductAttribute::getId,id);
//            PmsProductAttribute serviceOne = pmsProductAttributeService.getOne(lqw);
//            LambdaUpdateWrapper<PmsProductAttributeCategory> luw = new LambdaUpdateWrapper<>();
//            luw.eq(PmsProductAttributeCategory::getId,serviceOne.getProductAttributeCategoryId());
////            属性
//            if (serviceOne.getType()==0){
//                luw.setSql("attribute_count=attribute_count-"+ids.size());
////            参数
//            }else if (serviceOne.getType()==1){
//                luw.setSql("param_count=param_count-"+ids.size());
//            }
//        }
        return CommonResult.success(save);
    }
}

